//  此文件作为 Generator 的核心入口
//  需要导入一个继承自 Yeoman Generator 的类型
// Yeoman Generator 在工作时会自动调用我们在此类型中定义的一些生命周期方法
// 我们在这些方法中可以通过调用父类通过的一些工具方法实现一些功能，例如文件写入

import Generator from 'yeoman-generator';  // 使用 ES Module 方式导入

export default class extends Generator {
  // 构造函数，用来初始化生成器
  constructor(args, opts) {
    super(args, opts);  // 调用父类的构造函数
  }

  prompting() {
    return this.prompt([{
      type:'input',
      name:'name',
      message: 'Your project name',
      default: this.appname
    }]).then(answers => {
      this.answers = answers;
    })
  }

  writing() {
    // const tmpl = this.templatePath('bar.html')
    // const output = this.destinationPath('bar4.html')
    // // const content = {name:"Hello kk", success: true}
    // const content = this.answers;

    // this.fs.copyTpl(tmpl, output, content)


    const templates = [
        'public/favicon.ico',
        'public/index.html',
        '.gitignore',
        'babel.config.js',
        'jsconfig.json',
        'package-lock.json',
        'package.json',
        'README.md',
        'vue.config.js',
        'src/App.vue',
        'src/main.js',
        'src/assets/logo.png',
        'src/components/HelloWorld.vue'
    ];

    templates.forEach(item => {
        this.fs.copyTpl(
            this.templatePath(item),
            this.destinationPath(item),
            this.answers
        )
    })
  }
}